# -*- coding: utf -8 -*-
# autor: Rui Rebola



import xlrd
import matplotlib.pyplot as plt
import numpy as np
from db import *  
import math


listadedados = []

"""
abertura do ficheiro excel
"""
wb = xlrd.open_workbook('IPC_Portugal_1977_2013.xls')
folha = wb.sheet_by_index(0)


"""
Obtem os dados por linha e coloca os numa lista
"""	
def get_dados():	
	for row in range(folha.nrows-1):		
		dados = []
		for col in range(folha.ncols-1):
			if type(folha.cell_value(row+1,col+1)) == float:						
				dados.append(round(folha.cell_value(row+1,col+1),1))										
			else:
				dados.append(folha.cell_value(row+1,col+1))					
		listadedados.append(dados)		
'''
cria um grafico de barras
'''
def create_BarGraph(y, x, title, xlab,ylab):
	'''
	values - array - valores do y
	anos   - array - valores do x
	title  - string - titulo do grafico
	xlab   - string - legenda de x
	ylab   - string - legenda de y	
	'''
	
	ax = plt.subplot(111)
	width = 35	
	
	Size = np.arange(len(y)) * width
	ax.bar(Size, y, width)
	ax.set_xticks(Size + width/2)
	ax.set_xticklabels(x, rotation =90)
	ax.set_xlabel(xlab)
	ax.set_ylabel(ylab)
	ax.set_title(title)        
	plt.grid(True)
	plt.show()
	
'''
cria um grafico de linha
'''

def create_LineGraph(y, x, title, xlab,ylab):
	
	'''
	values - array - valores do y
	anos   - array - valores do x
	title  - string - titulo do grafico
	xlab   - string - legenda de x
	ylab   - string - legenda de y	
	'''
	
	plt.plot(x,y)
	plt.title(title)
	plt.xlabel(ylab)
	plt.ylabel(xlab)
	plt.grid(True)
	plt.show()

'''
calcula a media
'''

def average(values):
	'''
	values - array - faz media dos dados no array
	'''
	total = sum(values)/len(values)	
	return total
'''
calcula o desvio padrao
'''
def standard_dev(values):
	'''
	values - array - faz o desvio padrao dos dados no array
	'''
	
	length = len(values)	
	av = average(values)		
	total = 0
		
	for i in range(length):
		total+= (values[i]- av)**2		
	
	x = total/(length-1)
	std_dev = math.sqrt(x)
	
	return std_dev
